package com.ostrich.a2104gao5

/**
 * @Author : yaotianxue
 * @Time : On 2023/10/13 11:07
 * @Description : Test2
 */
fun main(){
    //匿名函数的调用：没有名字
    val total = "yaotianxue".count()//统计字符串的长度
    println(total)
    val totalA = "yaotianxue". count{ le -> le == 'a' }//复杂写法 统计字符串中有多少个a
    val totalA2 = "yaotianxue".count { it == 'a' }//简单写法 统计字符串中有多少个a
    println(totalA)
    println(totalA2)

    //具名函数
    println(a(12,"占三"))//具名函数
    println(b())
    println(c("占三"))

    //匿名函数
    //函数类型格式：(输入参数类型)->返回类型
    val a2:(Int,String) -> String = { age,name ->
        "姓名 $name 年龄 $age"
    }
    //简化版本:类型推断
    val a3 = { age:Int,name:String ->
        "姓名 $name 年龄 $age"
    }
    val b2:() -> String = {
        "哈哈哈"
    }
    //简化版本:类型推断
    val b3 = {
        "哈哈哈"
    }
    //it关键字：当有且仅有一个参数的时候可以使用it代替
    val c2:(String) -> Unit = {
        println(it)
    }
    //简化版本:类型推断
    val  c3 = { str:String ->
            println(str)
    }
    println(a2(12,"占三"))
    println(b2())
    println(c2("长孙"))
    println(a3(12,"占三"))
    println(b3())
    println(c3("长孙"))

}

fun c(name:String){
    println(name)
}

fun b():String{
    return "hahah"
}

fun a(age:Int,name:String):String{
    return "姓名 $name 年龄 $age"
}





